package cz.pecinovsky.english.pojj.adv_framework.test_util.default_game.hra;



/*******************************************************************************
 * Instance třídy {@code PříkazOtevři} představuje příkaz používaný
 * k otevření nějakého předmětu. V dané hře je témto předmětem vždy lednička
 * v kuchyni, ale obecně lze hru rozšířit o možnost otevření dalších
 * předmětů v dalších místnostech.
 *
 * @author    Rudolf PECINOVSKÝ
 * @version   0.00.000
 */
public class PříkazOtevři extends APříkaz
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří instanci mající na strosti reakci na příkaz <b>jdi</b>,
     * po jehož zadaní se hráč přesune do místnosti,
     * jejíž název bude uveden za příkazem.
     */
    public PříkazOtevři()
    {
        super( "Otevři",
               "Otevře zadaný předmět." );
    }


//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Otevře zadaný předmět; před tím však zkontroluje,
     * zda je zadán otevíraný předmět, zda tímto předmětem je lednička v kuchyni
     * a zda je lednička již podloženqa, aby šla otevřít.
     *
     * @param parametry Jediným povoleným parametrem je zatím lednička
     * @return Text zpravy vypsane po porovedeni prikazu
     */
    @Override
    public String execute( String... parametry )
    {
        if (parametry.length == 0)  {
            return "Je třeba říct, který předmět se má otevřít.";//==========>
        }
        if ((!parametry[0].equalsIgnoreCase("lednička"))  ||
            Místnost.getAktuálníMístnost() != Místnost.Kuchyň )
        {
            return "Otevřít je možno pouze ledničku v kuchyni"; //==========>
        }
        if (! Stav.LEDNICKA_PODLOZENA) {
            return "Lednička nejde otevřít. " +
                    "Na ledničce leží nějaký popsaný papír.";   //==========>
        }
        Místnost.setAktuálníMístnost(Místnost.Lednička);
        return "Úspěšně jste otevřel(a) ledničku.";
    }



//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        PrikazJdi x = new PrikazJdi();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
